Problem
【SHOI2017】相逢是问候
Description
希望以维护一个长度为的数组,这个数组的下标为从到的正整数。
一共有个操作,可以分为两种:
- :表示将第个到第个数()中的每一个数替换为,其中是一个常数
- :求第个到第个数的和,即
因为这个结果可能会很大,所以你只需要输出结果的值即可。
Input
第一行有三个整数。
接下来一行个整数,表示a数组的初始值。
接下来行,每行三个整数,其中第一个整数表示了操作的类型。
如果是,表示这是一个修改操作,操作的参数为。
如果是,表示这是一个询问操作,操作的参数为。
Output
Sample Input
1 | 4 4 7 2 |
Sample Output
1 | 0 |
HINT
, , , ,
Source
黑吉辽沪冀晋六省联考
鸣谢xlk
授权本OJ使用权
鸣谢多名网友提供正确数据,已重测!
标签:扩展欧拉定理
线段树
Solution
数论和数据结构结合。
扩展欧拉定理:。
由于最多次取后变为定值,所以可以暴力修改,类似区间取模的线段树,需要注意每层指数模的是取多少次的值。
因为修改时需要计算和快速幂,总复杂度为。预处理可将复杂度缩小为。
Code
1 |
|